package com.mindbox.mueblesalpes.presentacion.reportes;

import com.mindbox.mueblesalpes.negocio.entity.Cliente;
import com.mindbox.mueblesalpes.negocio.entity.Ciudad;
import com.mindbox.mueblesalpes.negocio.reportes.IReportes;
import com.mindbox.mueblesalpes.negocio.reportes.ReporteCompras;
import com.mindbox.mueblesalpes.presentacion.utils.Mensajes;
import com.mindbox.mueblesalpes.presentacion.utils.RequestParameters;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

/**
 * BackingBean de Reporte de Compras
 * @author Jaimoto
 */

public class ReporteComprasBean {

    private ReporteCompras reporte;
    @EJB
    private IReportes reportesService;
    


    /** Creates a new instance of ReporteComprasBean */
    public ReporteComprasBean() {
    }

    /**
     * Realiza el cargue inicial
     */
    public void loadInfo(){
        try {
            HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
            String idCiudad = (String) request.getAttribute(RequestParameters.ciudad.name());
            String idCliente = (String)request.getAttribute(RequestParameters.cliente.name());
            System.out.println("idCliente "+idCliente);
            Ciudad ciudad = new Ciudad();
            Cliente c = new Cliente();
            if(idCliente != null){
                c.setIdCliente(Long.valueOf(idCliente));
                reporte = reportesService.generarReporteCompras(c, (Date)request.getAttribute(RequestParameters.fechaIni.name())  ,(Date)request.getAttribute(RequestParameters.fechaFin.name()) , ciudad);
            }
        } catch (Exception ex) {
            Logger.getLogger(ReporteComprasBean.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * Obtiene la referencia del reporte
     * @return
     */
    public ReporteCompras getReporte() {
        if(reporte == null)
            loadInfo();
        return reporte;
    }

    /**
     * Asigna la referencia del reporte
     * @param reporte
     */
    public void setReporte(ReporteCompras reporte) {
        this.reporte = reporte;
    }

}
